import csv
import os
from training.msg import FormationRequest
from iop import BusinessService

class ReadCsvBs(BusinessService):

    def get_adapter_type():
        # 
        # 默认情况下，服务将每5秒调度一次,默认适配器
        return "Ens.InboundAdapter"
    
    def on_init(self):
        # 检查 ReadCsvBs 的实例是否具有 filename 属性
        # 如果没有，将其设置为 'formation.csv' 作为默认值
        if not hasattr(self, 'filename'):
            self.filename = 'data.csv'
           
        # 检查 ReadCsvBs 的实例是否具有 path 属性
        # 如果没有，将其设置为 '/irisdev/app/data/' 作为默认值
        if not hasattr(self, 'path'):
            self.path = '/irisdev/app/misc/'
        # 检查 target 属性是否已设置
        if not hasattr(self, 'target'):
            # 如果没有，将其设置为 'Instance.Of.SaveInTxtBo' 作为默认值
            self.target = 'MyIRIS.PyBPL'

    def on_process_input(self, message_input):
        # 打开 csv 文件
        with open(os.path.join(self.path, self.filename), newline='') as csvfile:
            # 创建一个 csv 读取器
            reader = csv.reader(csvfile, delimiter=',')
            self.trace('12345')
            # 跳过标题行
            next(reader)
            i = 1
            # 对于 csv 文件中的每一行
            for row in reader:
                # 创建一个 FormationRequest 消息
                msg = FormationRequest()
                # 设置消息的属性
                msg.id = i          
                if row[18] == 1:
                    msg.Sex = 'M'
                else:
                    msg.Sex = 'F'
                msg.Age = row[19]
                msg.BMI = row[4]
                msg.Smoker = row[5]
                # 发送同步消息
                response=self.send_request_sync(self.target,msg)
                self.trace(response.status)
                # trace记录
                self.trace(f'FormationRequest {msg.id} sent to {self.target}')
                i += 1
                if i==5:
                    break
        #os.rename(os.path.join(self.path, self.filename), os.path.join(self.path, 'archive', self.filename))
